#include<iostream>
#include<set>


template<typename T>
void Print(const T&v)
{
    for(auto ite = v.begin();ite != v.end();ite++)
    {
        std::cout<<*ite<<" ";
    }
    std::cout<<std::endl;
}


struct Student
{
    int id;
    std::string name;
    
};

// bool operator<(const Student &s1,const Student &s2)
// {
//     return s1.id < s2.id;
// }

// bool operator<(const Student &s1,const Student &s2)
// {
//     return s1.name < s2.name;
// }

bool operator>(const Student &s1,const Student &s2)
{
    return s1.name > s2.name;
}


std::ostream& operator<<(std::ostream& os,const Student& s)
{
    os<<s.id<<" "<<s.name<<std::endl;
    return os;
}
int main()
{
    // 容器的值是唯一的
    // int a[] ={5,3,1,4,2};
    // std::set<int> s;
    // for(int i=0;i<5;i++)
    // {
    //     s.insert(a[i]);
    // }

    // s.insert(2); 

    // s.erase(3);
    
    
    //如果找不到,会返回一个尾部迭代器
    // auto ite = s.find(333);
    // if(ite != s.end())
    //     s.erase(ite);

    // Print(s);
    

    std::set<Student,std::greater<Student>> s;  //set 的默认比较 是小于号 
                        //但是可以这样给 比较器 参数 让他变成 比大的
    
    s.insert({1,"zhangsan"});
    s.insert({3,"lisi"});
    s.insert({2,"wangwu"});


    Print(s);
    return 0;
}